﻿///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

#Область ПрограммныйИнтерфейс

// Позволяет задать настройки для регистрации событий доступа к персональным данным.
//
// При расширении состава субъектов персональных данных следует иметь в виду, что регистрация событий для них
// не начнется автоматически (это отдельно настраивает администратор программы). Однако если необходимо управлять этим
// при переходе на новую версию программы, то следует реализовать обработчик обновления, вызывающий 
// процедуру ЗащитаПерсональныхДанных.УстановитьИспользованиеСобытияДоступ.
//
// Параметры:
//   ТаблицаСведений    - ТаблицаЗначений:
//    * Объект          - Строка - полное имя объекта метаданных с персональными данными;
//    * ПоляРегистрации - Строка - имена полей, значения которых выводятся в журнал событий доступа к персональным
//                                 данным для идентификации субъекта персональных данных. Для ссылочных типов, 
//                                 как правило, это поле "Ссылка". Отдельные поля регистрации отделяются запятой, 
//                                 альтернативные - символом "|";
//    * ПоляДоступа     - Строка - имена полей доступа через запятую. Обращение (попытка доступа) к этим полям 
//                                 приводит к записи журнала;
//    * ОбластьДанных	 - Строка - идентификатор категории данных.
//
// Пример:
//  Сведения = ТаблицаСведений.Добавить();
//  Сведения.Объект				= "Справочник.ФизическиеЛица";
//  Сведения.ПоляРегистрации	= "Ссылка";
//  Сведения.ПоляДоступа		= "Наименование";
//  Сведения.ОбластьДанных		= "ФИО";
//
//  Сведения = ТаблицаСведений.Добавить();
//  Сведения.Объект				= "Справочник.ФизическиеЛица";
//  Сведения.ПоляРегистрации	= "Ссылка";
//  Сведения.ПоляДоступа		= "СерияДокумента,НомерДокумента,КемВыданДокумент,ДатаВыдачиДокумента";
//  Сведения.ОбластьДанных		= "ПаспортныеДанные";
//
Процедура ЗаполнитьСведенияОПерсональныхДанных(ТаблицаСведений) Экспорт
	
	
	
КонецПроцедуры

// Обеспечивает составление коллекции областей персональных данных.
//
// Параметры:
//    КатегорииПерсональныхДанных - ТаблицаЗначений:
//      * Имя			- Строка - идентификатор категории данных.
//      * Представление	- Строка - пользовательское представление категории данных.
//      * Родитель		- Строка - идентификатор родительской категории данных.
//
Процедура ЗаполнитьОбластиПерсональныхДанных(КатегорииПерсональныхДанных) Экспорт
	
	
	
КонецПроцедуры

// Вызывается при заполнении формы "Согласие на обработку персональных данных" данными, 
// переданных в качестве параметров, субъектов.
//
// Параметры:
//    СубъектыПерсональныхДанных - Массив из Структура - содержит сведения о субъектах:
//      * Субъект - ОпределяемыйТип.СубъектПерсональныхДанных
//      * ФИО - Строка
//      * Адрес - Строка
//      * ПаспортныеДанные - Строка
//    ДатаАктуальности - Дата - дата, на которую нужно заполнить сведения.
//
Процедура ДополнитьДанныеСубъектовПерсональныхДанных(СубъектыПерсональныхДанных, ДатаАктуальности) Экспорт
	
	
	
КонецПроцедуры

// Вызывается при заполнении формы "Согласие на обработку персональных данных" данными организации.
//
// Параметры:
//    Организация		- ОпределяемыйТип.Организация - оператор персональных данных.
//    ДанныеОрганизации	- Структура - данные об организации (адрес, ФИО ответственного и т.д.).
//    ДатаАктуальности	- Дата      - дата, на которую нужно заполнить сведения.
//
Процедура ДополнитьДанныеОрганизацииОператораПерсональныхДанных(Организация, ДанныеОрганизации, ДатаАктуальности) Экспорт
	
	

КонецПроцедуры

// Вызывается при заполнении формы "Согласие на обработку персональных данных".
// Предназначена для заполнения поля ФИО ответственного за обработку ПДн.
//
// Параметры:
//    ФизическоеЛицо	- ОпределяемыйТип.ФизическоеЛицо - ответственный за обработку персональных данных.
//    ФИО				- Строка - ФИО ответственного, которые нужно заполнить.
//
Процедура ЗаполнитьФИОФизическогоЛица(ФизическоеЛицо, ФИО) Экспорт
	
	
	
КонецПроцедуры

// Возвращает организацию по умолчанию.
// 
// Возвращаемое значение:
//  ОпределяемыйТип.Организация
//
Функция ОрганизацияПоУмолчанию() Экспорт
	
	
	
КонецФункции

#Область УничтожениеПерсональныхДанных

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Уничтожение персональных данных (ПДн) выполняется при проведении документа "Акт об уничтожении персональных данных".
// При этом выполняется поиск объектов информационной базы, в которых содержатся ПДн субъектов.
// Состав таких объектов и их полей описывается в методе ПриЗаполненииСведенийОбУничтожаемыхПерсональныхДанных.
// В найденных объектах значения реквизитов, содержащих ПДн, очищаются или заменяются случайными значениями.
// Запись объекта с уничтоженными ПДн выполняется в режиме загрузки. В случае необходимости выполнения дополнительных
// действий, при уничтожении ПДн перед записью и после записи объекта можно использовать обработчики
// ПередУничтожениемПерсональныхДанных и ПослеУничтоженияПерсональныхДанных соответственно.

// Заполняет таблицу значений с описанием объектов метаданных и их полей, в которых содержатся персональные данные
// субъектов, подлежащие уничтожению.
// 
// Например, персональные данные физического лицо могут храниться в самом справочнике ФизическиеЛица,
// в регистре сведений ФИОФизическихЛиц, в документе ВедомостьНаВыплатуЗарплатыВБанк и т.д.
// 
// Параметры:
//  ТаблицаСведений - ТаблицаЗначений:
//   * Объект - Строка - полное имя объекта метаданных, в котором содержатся персональные данные субъекта.
//   	Например, "Справочник.ФизическиеЛица".
//   * ПолеСубъект - Строка - имя поля объекта, в котором содержится ссылка на субъекта.
//   	Для стандартных реквизитов используется имя реквизита, например "Ссылка".
//   	Для остальных полей используется полное имя объекта метаданных реквизита, например
//   		"Документ.ВедомостьНаВыплатуЗарплатыВБанк.ТабличнаяЧасть.Состав.Реквизит.ФизическоеЛицо"
//   * Поля - Массив из Строка, Строка - имена полей объекта, в которых содержатся персональные данные субъекта
//   	Для стандартных реквизитов используется имя реквизита, например "Наименование".
//   	Для остальных полей используется полное имя объекта метаданных реквизита, например
//   		"Справочник.ФизическиеЛица.Реквизит.ФИО"
//   * КатегорияДанных - Строка - категория, к которой относятся персональные данные.
//   
// Пример:
// 
//	НовыеСведения = ТаблицаСведений.Добавить();
//	НовыеСведения.Объект = "Справочник.ФизическиеЛица";
//	НовыеСведения.ПолеСубъект = "Ссылка";
//	НовыеСведения.Поля = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве("Наименование");
//	НовыеСведения.КатегорияДанных = "ФИО";
//
//	НовыеСведения = ТаблицаСведений.Добавить();
//	НовыеСведения.Объект = "Документ.ВедомостьНаВыплатуЗарплатыВБанк";
//	НовыеСведения.ПолеСубъект = "Документ.ВедомостьНаВыплатуЗарплатыВБанк.ТабличнаяЧасть.Состав.Реквизит.ФизическоеЛицо";
//	НовыеСведения.Поля = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(
//		"Документ.ВедомостьНаВыплатуЗарплатыВБанк.ТабличнаяЧасть.Состав.Реквизит.СНИЛС");
//	НовыеСведения.КатегорияДанных = "СНИЛС";
//
Процедура ПриЗаполненииСведенийОбУничтожаемыхПерсональныхДанных(ТаблицаСведений) Экспорт
	
	
	
КонецПроцедуры

// Позволяет выполнить дополнительные действия перед уничтожением персональных данных субъектов. В том числе, отказаться
// от уничтожения персональных данных, добавив субъекта в таблицу исключений с указанием причины отказа от уничтожения.
// Или же добавить в массив субъектов других субъектов, данные которых тоже должны быть уничтожены. Например, если при 
// уничтожении данных физического лица должны быть уничтожены данные связанных с ним кандидатов.
//
// Параметры:
//   Субъекты - Массив из ОпределяемыйТип.СубъектПерсональныхДанных - ссылки на объекты данных, чьи персональные данные
//     будут уничтожены.
//   ТаблицаИсключений - ТаблицаЗначений:
//     * Субъект - ОпределяемыйТип.СубъектПерсональныхДанных
//     * ПричинаОтменыУничтожения - Строка
//    - ТаблицаЗначений - в которую добавляются субъекты и причины отказа уничтожения их данных
//   ОтказОтСкрытия - Булево - (по умолчанию Истина) признак отказа от скрытия. Если определены причины отказа 
//                             от скрытия, то параметру необходимо установить значение Ложь.
//
Процедура ПередСкрытиемПерсональныхДанныхСубъектов(Субъекты, ТаблицаИсключений, ОтказОтСкрытия) Экспорт
	
КонецПроцедуры

// Позволяет выполнить дополнительные действия при уничтожении персональных данных перед записью объекта,
// а также отказаться от записи объекта.
// 
// Параметры:
//  Объект - СправочникОбъект,ДокументОбъект
//  Субъекты - Массив из ОпределяемыйТип.СубъектПерсональныхДанных
//  ВыполнитьЗаписьОбъекта - Булево - если Ложь, то запись объекта не выполняется.
//
Процедура ПередУничтожениемПерсональныхДанных(Объект, Субъекты, ВыполнитьЗаписьОбъекта) Экспорт

КонецПроцедуры

// Позволяет выполнить дополнительные действия при уничтожении персональных данных после записи объекта.
// 
// Параметры:
//  Объект - СправочникОбъект,ДокументОбъект
//  Субъекты - Массив из ОпределяемыйТип.СубъектПерсональныхДанных
//
Процедура ПослеУничтоженияПерсональныхДанных(Объект, Субъекты) Экспорт

КонецПроцедуры

#КонецОбласти

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Срок хранения ПДн - это дата после которой необходимо уничтожить ПДн субъекта. Ранее этой даты уничтожить ПДн нельзя.
// Сроки хранения ПДн рассчитываются автоматически регламентным заданием РасчетСроковХраненияПерсональныхДанных.
// При наступлении события, которое влияет на срок хранения ПДн, необходимо с помощью метода
// ЗащитаПерсональныхДанных.ДобавитьСубъектыДляРасчетаСроковХранения зарегистрировать субъекта для расчета срока хранения.
// Такими событиями могут быть, например, создание нового физического лица, ввод согласия на обработку ПДн или
// прием сотрудника на работу.
// При расчете сроков хранения ПДн, в процедуре ПриРасчетеСроковХраненияПерсональныхДанных заполняется таблица значений,
// в которую различные подсистемы добавляют рассчитанные сроки хранения. Датой, при наступлении которой данные подлежат
// уничтожению, будет определена самая поздняя из всех заполненных для этого субъекта.

// Позволяет добавить в таблицу значений информацию о сроках хранения персональных данных.
// 
// Параметры:
//  ДанныеСубъектов - ТаблицаЗначений:
//   * Субъект - ОпределяемыйТип.СубъектПерсональныхДанных - ссылка на субъекта.
//   * ДатаСобытия - Дата - дата события, которое потребовало обновления срока хранения персональных данных.
//  СрокиХранения - ТаблицаЗначений:
//   * Субъект - ОпределяемыйТип.СубъектПерсональныхДанных - ссылка на субъекта
//   * СрокХранения - Дата - дата, до которой должны храниться персональные данные субъекта и при наступлении которой,
//     они должны быть уничтожены.
//   * Организация - ОпределяемыйТип.Организация - ссылка на организацию субъекта (если организацию определить
//     невозможно, не заполняется)
//   * Комментарий - Строка - произвольная строка с пояснением к рассчитанному сроку хранения.
//
Процедура ПриРасчетеСроковХраненияПерсональныхДанных(ДанныеСубъектов, СрокиХранения) Экспорт
	
	
	
КонецПроцедуры

#КонецОбласти
